package com.github.houbb.id.util;

import com.github.houbb.heaven.util.lang.StringUtil;
import com.github.houbb.id.core.Ids;

/**
 * @author binbin.hou
 * @since 0.0.1
 */
public final class IdHelper {

    private IdHelper(){}

    /**
     * 返回 8 位的 uuid
     * @return 结果
     * @since 0.0.1
     */
    public static String uuid8() {
        return Ids.uuid8().id();
    }
    /**
     * 返回 32 位的 uuid
     * @return 结果
     * @since 0.0.1
     */
    public static String uuid32() {
        return Ids.uuid32().id();
    }

    /**
     * 随机
     * @param prefix 前缀
     * @param randomLength 随机结果
     * @return 结果
     * @since 0.0.1
     */
    public static String random(final String prefix,
                                final int randomLength) {
        return Ids.random(prefix, randomLength).id();
    }

    /**
     * 随机
     * @return 结果
     * @since 0.0.1
     */
    public static String random() {
        return Ids.random(StringUtil.EMPTY, 10).id();
    }

    /**
     * 雪花算法
     * @return 雪花算法
     * @since 0.0.1
     */
    public static String snowflake() {
        return Ids.snowflake().id();
    }

    /**
     * 本地内存
     * @return 本地
     * @since 0.0.2
     */
    public static String local() {
        return Ids.local().id();
    }

    /**
     * uuid 的数字形式
     * @return 本地
     * @since 0.0.3
     */
    public static String uuidNum() {
        return Ids.uuidNum().id();
    }

    /**
     * 便于人类阅读的 id 策略
     * @return 本地
     * @since 0.0.4
     */
    public static String human() {
        return Ids.human().id();
    }

}
